Within a data processing apparatus, it is known to provide one or more resources which are shared amongst a plurality of logic elements of the data processing apparatus. For example, the plurality of logic elements may take the form of a plurality of master logic units, and the shared resource may take the form of a slave logic unit with respect to which the various master logic units can initiate transactions. Each transaction typically consists of an address transfer from a master logic unit to a slave logic unit, and one or more data transfers between the master logic unit and the slave logic unit. For a write transaction, these data transfers will pass from the master logic unit to the slave logic unit (in some implementations there will additionally be a write response transfer from the slave logic unit to the master logic unit), whilst for a read transaction these data transfers will pass from the slave logic unit to the master logic unit.
To enable each transaction to take place, a communication path needs to be established between the master logic unit initiating the transaction, and the slave logic unit to which the transaction is directed. If the slave logic unit is shared amongst a plurality of master logic units, then this can cause contention amongst the various master logic units for access to the shared slave logic unit, and this contention can occur at a variety of points within the data processing apparatus.
For example, dependent on the mechanism provided for establishing the communication paths, it may be possible to provide separate dedicated communication paths for each master logic unit. However, since the slave logic unit will typically only be able to handle one transaction at a time, this leads to contention at the input to the slave logic unit itself, and typically it is then necessary to provide arbitration circuitry to arbitrate between multiple simultaneous access requests issued by different master logic units and seeking to access the same shared slave logic unit.
More typically, the mechanism used to establish the communication paths between master logic units and slave logic units is also shared amongst the various master and slave logic units. Accordingly there will typically be points along the communication paths between a master logic unit and a slave logic unit which involve use of a shared physical connection medium, and accordingly arbitration is typically required at such points along the communication paths.
For example, a data processing apparatus may provide interconnect circuitry for coupling the various master logic units and slave logic units, with the interconnect circuitry providing a plurality of connection paths over which such communication paths can be established. Often, certain of the connection paths are shared between multiple logic units, and accordingly arbitration circuitry is provided to arbitrate access to such connection paths. In such instances, it can be seen that the connection paths themselves form a shared resource.
Hence, it will be appreciated that within a typical data processing apparatus, there will be a variety of shared resources and wherever multiple logic elements are contending for access to that shared resource, arbitration circuitry is typically provided to arbitrate amongst those logic elements so as to decide at any point in time which logic element should have access to that shared resource.
Typically, the arbitration circuitry will be configured to apply a particular arbitration policy to decide which logic element to grant access to the shared resource at any particular point in time. For example, a known arbitration scheme may use an algorithm that employs a fixed priority technique, whereby particular priority levels are associated with particular logic elements, and then when multiple logic elements are seeking to access a shared resource at the same time, the arbitration circuitry grants access to the logic element having the highest priority. An alternative known arbitration policy applies a round robin (fair share) technique, which may for example be appropriate when all of the various logic elements that may access the shared resource are considered to have equal priority, and the aim is to seek to provide each logic element with the same level of access to the shared resource.
Whilst certain known arbitration policies are more suited to certain situations than others, typically the arbitration circuitry within the data processing apparatus will be configured to employ one particular arbitration policy which leads to a lack of flexibility in the design. Accordingly, it would be desirable to provide a more flexible technique for performing arbitration within a data processing apparatus.